package com.lanswon.qzsmk.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.lanswon.qzsmk.model.SysPermission;

public interface SysPermissionMapper {


	/**
	 * 保存
	 * @param record
	 * @return
	 */
    int insert(SysPermission record);
    
    /**
     * 查询是否重复
     * @param acs 资源路径
     * @return
     */
    int queryCountByResource(String resource);

    /**
     * 查询是否重复
     * @param name
     * @return
     */
    int queryCountByName(String name);
    
    /**
     * 
     * @param privilegeId
     * @return
     */
    SysPermission querySysPermissionById(Integer privilegeId);
    
    /**
     * 指定类型权限
     * @param privilegeId
     * @param type
     * @return
     */
    SysPermission querySysPermissionByType(@Param("privilegeId")Integer privilegeId,@Param("type")String type);
    
    
    /**
     * 获取所有父子菜单
     * @param menu
     * @return
     */
    List<SysPermission> querySysPermissionMenus(String menus);
    
    /**
     * 获取顶级菜单
     * @return
     */
    SysPermission queryFirstMenus();
    
    /**
     *模糊查询
     * @param percode 权限代码
     * @return
     */
    List<SysPermission> likeQuerySysPermissionByPercode(String percode);
    
    /**
     *模糊查询
     * @param name 权限名称
     * @return
     */
//    List<SysPermission> likeQuerySysPermissionByName(String name);
    
    /**
     *查询url和权限代码
     * @return
     */
    List<SysPermission> queryPermission();
    
    /**
     * 查询
     * @param url 请求路径
     * @return
     */
    SysPermission queryPermissionByUrl(String url);
    
    /**
     * 查询
     * @param ParentId 父id
     * @return
     */
    List<SysPermission> queryPermissionByParentId(Integer parentId);
    
    /**
     * 查询
     * @param ParentId 父id
     * @return
     */
    List<SysPermission> queryPermissionMenusByParentId(Integer parentId,String type);
    
    /**
     * 查询所有url不为空权限
     * @return
     */
    List<SysPermission> queryAllSysPermissionUrl();
    
    /**
     * 查询所有权限代码不为空
     * @return
     */
    List<SysPermission> queryAllSysPermissionPerCode();
    
    /**
     * 查询所有url为空权限
     * @return
     */
    List<SysPermission> queryAllSysPermissionNullUrl();
    
    /**
     * 查询所有name不为空权限
     * @return
     */
    List<SysPermission> queryAllName();
    
    /**
     * 查询所有的权限
     * @return
     */
    List<SysPermission> queryAllSysPermission();
    
    /**
     * 根据userId查询权限
     * @param userId
     * @return
     */
    List<SysPermission> querySysPermissionByUserId(Integer userId);
    
    /**
     * 根据角色id查询权限指定权限类型
     * @param roleId
     * @return
     */
    List<SysPermission> querySysPermissionByRoleId(Integer roleId,String type);
}